/**
 * 功能:防抖
 * @param func:函数，
 * @param delay:延迟时间，
 * @returns {string}
 */
export function debounce(func, delay) {
  let timer = null;
  return function () {
    const context = this;
    const args = arguments;
    clearTimeout(timer);
    timer = setTimeout(function () {
      func.apply(context, args);
    }, delay);
  };
}





/**
 * 功能:节流
 * @param func:函数，
 * @param delay:延迟时间，
 * @returns {string}
 */
export function throttle(func, delay) {
  let timer = null;
  return function () {
    const context = this;
    const args = arguments;
    if (!timer) {
      func.apply(context, args);
      timer = setTimeout(function () {
        timer = null;
      }, delay);
    }
  };
}

/**
 * 功能:判断格式是否为符合要求
 * @param t:判断的数据的类型
 * @param s:判断的数据
 * @returns {boolean}
 */
export function format(t, s) {
  switch (t) {
    case 'tel':
      if (/^1[3-9]\d{9}$/.test(s)) {
        return true
      }
      wx.showToast({
        icon: 'none',
        title: '手机号格式错误',
      })
      return false;
    case 'password':
      if (/^[\w!@#$%^&*()-=_+~`[\]{}|;:'",.<>/?]{6,}$/.test(s)) {
        return true
      }
      wx.showToast({
        icon: 'none',
        title: '密码格式为数字和字母以及特殊字符构成且最少6位数',
      })
      return false;
      break;
    default:
      return false;
  }
}

// 请求
import {
  url
} from "../api/congfig"
function require(urlApi, method, data) {
  return new Promise((res, rej) => {
    wx.showLoading({
      title: '请求数据中...',
    })
    let token = wx.getStorageSync('token')

    wx.request({
      url: url + urlApi, //仅为示例，并非真实的接口地址
      method: method,
      data: data,
      header: {
        'token': token ? token : '',
        'content-type': 'application/x-www-form-urlencoded' // 默认值
      },
      success(resObj) {
        // 成功返回
        console.log('请求成功')
        res(resObj.data)
      },
      fail(err) {
        // 请求失败
        console.log('请求失败')
        rej(err)
      },
      complete(resData) {
        wx.hideLoading()
        wx.showToast({
          icon:'none',
          title: resData.data.msg,
        })
      }
    })
  })
}

/**
 * 功能:将毫秒数格式化时间的函数，，时间格式（2023-08-09）
 * @param milliseconds:毫秒数
 * @returns {string}
 */

 function formatDate(milliseconds) {
	const date = new Date(milliseconds);
	const year = date.getFullYear();
	const month = String(date.getMonth() + 1).padStart(2, '0');
	const day = String(date.getDate()).padStart(2, '0');

	return `${year}-${month}-${day}`;
}


// 将ip地址的图片路径转为base64地址
function base64(url) {
  console.log("传来的参数",url);
  return new Promise((res,rej)=>{
    wx.request({
      url: url, // 替换为你的本地图片路径
      responseType: 'arraybuffer', // 设置响应类型为二进制数据
      success: function(ress) {
        // 2. 在请求成功的回调函数中，将获取到的图片数据转换为 base64 格式
        let base64 = wx.arrayBufferToBase64(ress.data);
    
        // 3. 将转换后的 base64 数据赋值给图片的 src 属性，以显示图片
        let imageUrl = 'data:image/jpeg;base64,' + base64;
        // 将 imageUrl 赋值给你的图片组件的 src 属性
        res(imageUrl)
      },
      fail: function(res) {
        rej(res)
        console.log(res);
      }
    });
  })
  
}




module.exports = {
  debounce,
  throttle,
  format,
  require,
  formatDate,
  base64
}